CSES - Putka Open 2020 – 4/5 - Results
Submission details
Task:Neliöt
Sender:AtskaFin
Submission time:2020-11-06 18:54:23 +0200
Language:C++17
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED28
#2ACCEPTED72
Test results
testverdicttimegroup
#1ACCEPTED0.02 s1, 2details
#2ACCEPTED0.02 s1, 2details
#3ACCEPTED0.02 s2details

Code

#include <iostream>
#include <string>
#include <map>

typedef long long ll;
using namespace std;

ll arr[31622];
map<int, int> m;

int main() {
  int t; cin>>t;
  for (int i = 1; (ll)i*i < 1e9; i++) {
    arr[i-1] = i*i;
    m[i*i] = 1;
  }

  for (int i = 0; i < t; i++) {
    int x; cin>>x;
    if (m[x]) {
      cout << "YES" << "\n";
      continue;
    }

    int a = 0, b = 31621;
    while (true) {
      if (a > b) {
        cout << "NO" << "\n";
        break;
      } else if (arr[a]+arr[b]==x) {
        cout << "YES" << "\n";
        break;
      }

      if (arr[a]+arr[b] < x) {
        a++;
      } else {
        b--;
      }
    }
  }
}

Test details

Test 1

Group: 1, 2

Verdict: ACCEPTED

input
100
1
2
3
4
...

correct output
YES
YES
NO
YES
YES
...

user output
YES
YES
NO
YES
YES
...

Test 2

Group: 1, 2

Verdict: ACCEPTED

input
100
522
419
402
969
...

correct output
YES
NO
NO
NO
NO
...

user output
YES
NO
NO
NO
NO
...

Test 3

Group: 2

Verdict: ACCEPTED

input
100
575833539
744851460
436154655
655319365
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...