Coding
  • Welcome
  • Baisc Knowledge
    • Vim
    • C
      • Library
    • Java
      • Setup
      • Java Basic
  • Kattis
    • Easy
      • A Second Opinion
      • A Shortcut to What?
      • A Stack of Gold
      • ACM Contest Scoring
      • ASCII kassi
      • Aaah!
      • Add Two Numbers
      • Adding Trouble
      • Afjörmun
      • Airfare Grants
      • Above Average
      • Akcija
      • Alphabet Spam
      • Amerískur vinnustaður
      • Anti-Palindrome
      • Apaxiaaaaaaaaaaaans!
      • Arithmetic Functions
      • Arm Coordination
      • Arrangement
      • Attendance
      • Autori
      • Average Character
      • Avion
      • Baby Bites
      • Babylonian Numbers
      • ABC
      • Aldur
      • Backspace
      • Bannorð
      • Barcelona
      • Basketball One-on-One
      • Batter Up
      • Beavergnaw
      • Bela
      • BergMál
      • Bergur*
      • Akureyri*
      • Best Compromise
      • Best Relay Team*
      • Besta gjöfin
      • Betting
      • Bijele
      • Bilað Lyklaborð
      • Bitte ein Bit
      • Blandað Best
      • Blaðra
      • Blaðra2
      • Bluetooth*
      • Booking a Room
      • Bottle Opening
      • Bounding Robots
      • Breaking Branches*
      • Bracket Matching*
      • Broken Swords
      • Building Pyramids
      • Bus
      • Bus Assignment
      • CPR Number
      • Call for Problems
      • Canadians, eh?
      • Candy Store
      • Cetiri
      • Cetvrta
      • Champernowne Verification
      • Chanukah Challenge
      • Chardonnay
      • Chocolate Division*
      • Chugging
      • Cinema Crowds 2
      • Class Field Trip
      • ASCII Kassi 2
      • Coffee Cup Combo
      • Cold-puter Science
      • Composed Rhythms
      • Cookies
      • Cooking Water
      • Cornhusker
      • Cosmic Path Optimization
      • Count the Vowels
Powered by GitBook
On this page
  • Question
  • Solution
  • Idea
  • Code
Edit on GitHub
  1. Kattis
  2. Easy

Class Field Trip

PreviousCinema Crowds 2NextASCII Kassi 2

Last updated 5 months ago

Question

Solution

Idea

The test cases will include the situation when the input contains exactly 100 valid lowercase characters.

Code

This is a classic string manipulation. Since the given two strings are in alphabetical order already. So we just need to use three variables to mark the processed character, and the logic is shown

below
https://open.kattis.com/problems/classfieldtripopen.kattis.com
https://github.com/mendax1234/Coding-Problems/blob/main/kattis/classfieldtrip/classfieldtrip.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX_LEN 102

void merge(char *line1, char *line2, char *merged)
{
  int i, j;
  int k = 0;
  for (i = 0, j = 0; line1[i] != 0 && line2[j] != 0; k += 1)
  {
    if (line1[i] < line2[j])
    {
      merged[k] = line1[i];
      i += 1;
    }
    else
    {
      merged[k] = line2[j];
      j += 1;
    }
  }
  if (line1[i] == 0)
  {
    for (int m = j; line2[m] != 0; m += 1, k += 1)
    {
      merged[k] = line2[m];
    }
  }
  else if (line2[j] == 0)
  {
    for (int m = i; line1[m] != 0; m += 1, k += 1)
    {
      merged[k] = line1[m];
    }
  }
}

int main()
{
  char line1[MAX_LEN];

  if (fgets(line1, MAX_LEN, stdin))
  {
    line1[strcspn(line1, "\n")] = 0;
  }
  
  char line2[MAX_LEN];

  if (fgets(line2, MAX_LEN, stdin))
  {
    line2[strcspn(line2, "\n")] = 0;
  }

  int len = strlen(line1) + strlen(line2);
  char *merged = calloc(len + 1, sizeof(char));
  merge(line1, line2, merged);
  merged[len] = 0;
  printf("%s\n", merged);
  free(merged);
}