Code nộp trên Kattis bị Wrong Answer

Đây là bài có độ khó 1.4 (nghĩa là rất dễ) mình nghĩ code mình đúng mà nộp lên sai ngay test đầu. Ko biết lí do tại sao mong các bạn giúp đỡ.

Link gốc: https://open.kattis.com/problems/cups

CODE của mình :

#include<bits/stdc++.h>
#define FOR(i, a, b) for(int i=a; i<=b; i++)
using namespace std;

int t;
double n;
string s, x, y;

int check_int(string x){
	for(int i=0; x[i]; i++)
	if (x[i] <= '9' && x[i]>='0') 
		return 1; 
	return 0;
}
double bien(string s){
	int n;
	for(int i=0; s[i]; i++) 
		n=n*10+s[i]-'0';
	return n;
}

struct mang{
	int u; string v;
};
mang a[1000111];
bool cmd(mang a, mang b){
	return a.u < b.u;
}

int main(){
	cin>>t;
	for(int i=1; i<=t; i++){
		cin>>x>>y;
		if (check_int(x)==1){
			n=(double)bien(x)/2;
			s=y;
		}
		else{
			n=bien(y);
			s=x;
		}
		a[i].u=n; a[i].v=s;
	}
	sort(a+1,a+1+t,cmd);
	for(int i=1; i<=t; i++) cout<<a[i].v<<"\n";
}

Có thể liên quan đến cin.ignore(). :thinking:

Hàm check_int() không ổn lắm.

5 Likes

Sai case này nè
In

3
red 1000
1000 blue
green 7

Out

blue
red
green
6 Likes

In

3
red 1000
1000 blue
green 7

Out

blue
red
green

ủa mình nghĩ output đúng sẽ là
green (bán kính 7)
blue (bk 500)
red(bk 1000)

tại sao blue lại ở đầu tiên vậy bạn ?

đã accept !!!

làm sao mà AC đươc vậy bạn ?

nghĩ như thế nào thì làm như vậy thôi. 1.4 mà

có code ko cho tôi mượn tham khảo với ! tôi gà lắm T_T

đây, nghĩ thế nào code như vậy thôi.

#include <iostream>
#include <string>
using namespace std;
int n;
struct cup{
    double radius;
    string name;
};
cup ar[1000], br[1000];
bool checkxau(string xau){
    int l = xau.size();
    for (int i = 0; i < l; i++)
        if (xau[i] > 'a' && xau[i] < 'z')
        return false;
    return true;
}
double Move(string xau){
    int l = xau.size(), so = 0;
    for (int i = 0; i < l; i++)
        so = so * 10 + (xau[i] - '0');
    return (double)so/2;
}
void nhap(){
    cin >> n;
    for (int i = 0; i < n; i++){
        string xau1, xau2;
        cin >> xau1 >> xau2;
        if (checkxau(xau1) == true){
          ar[i].radius = Move(xau1);
          ar[i].name = xau2;
          br[i].radius = ar[i].radius;
        }
        else{
            ar[i].radius = Move(xau2) * 2;
            ar[i].name = xau1;
            br[i].radius = ar[i].radius;
        }
    }
}
int main()
{
  //freopen("E:/TEST/TEST-CBLKS/cups/vao", "r", stdin);
  //freopen("E:/TEST/TEST-CBLKS/cups/ra", "w", stdout);
  nhap();
  for (int i = 0; i < n - 1; i++){
     for (int j = i + 1; j < n; j++)
        if (br[j].radius < br[i].radius){
          double tg = br[j].radius;
          br[j].radius = br[i].radius;
          br[i].radius = tg;
        }
  }
  for (int i = 0; i < n; i++)
     for (int j = 0; j < n; j++)
        if (br[i].radius == ar[j].radius)
          cout << ar[j].name << endl;
    return 0;
}
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?