Submission #1060114

# Submission time Handle Problem Language Result Execution time Memory
1060114 2024-08-15T10:43:01 Z YassineBenYounes Vision Program (IOI19_vision) C++17
26 / 100
14 ms 3164 KB
#include<bits/stdc++.h>
#include<chrono>
#include<random>
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef double db;
ll gcd(ll a , ll b) {return b ? gcd(b , a % b) : a ;} // greatest common divisor (PGCD)
ll lcm(ll a , ll b) {return (a * b) / gcd(a , b);} // least common multiple (PPCM)
int dx[8] = {1, 0, 0, -1, 1, 1, -1, -1};
int dy[8] = {0, 1, -1, 0, 1, -1, -1, 1};
#define endl "\n"
#define ss second
#define ff first
#define all(x) (x).begin() , (x).end()
#define pb push_back
#define vi vector<int>
#define vii vector<pair<int,int>>
#define vl vector<ll>
#define vll vector<pair<ll,ll>>
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pdd  pair<double,double>
#define vdd  vector<pdd>
#define speed ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define pbds tree<pii, null_type, less<pii>,rb_tree_tag, tree_order_statistics_node_update>
using namespace __gnu_pbds;
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
 
////////////////////Only Clear Code//////////////////////////
 
void usaco_problem(){
    freopen("milkvisits.in", "r", stdin);
    freopen("milkvisits.out", "w", stdout);
}
 
void init(){
    #ifndef ONLINE_JUDGE
 
freopen("input.txt", "r", stdin);
 
freopen("output.txt", "w", stdout);
 
#endif // ONLINE_JUDGE
}
const int mx = 5e6+5;
const int LOG = 22;
const int inf = 1e9;
const ll mod = 1e9+7;
const int sq = 320;
 
#include "vision.h"
int n, m, k;
/*
int ind = 0;
int last = 0;
int arr[mx];


int best = 0;

int add_not(int x){
    best++;
    int y = !arr[x];
    last = y;
    arr[ind] = y;
    return ind++;
}
 
int add_and(vi v){
    best += v.size();
    int y = 1;
    for(int i : v){
        y &= arr[i];
    }
    last = y;
    arr[ind] = y;
    return ind++;
}
 
int add_or(vi v){
    best += v.size();
    int y = 0;
    for(int i : v){
        y |= arr[i];
    }
    last = y;
    arr[ind] = y;
    return ind++;
}
 
int add_xor(vi v){
    best += v.size();
    int y = 0;
    for(int i : v){
        y ^= arr[i];
    }
    last = y;
    arr[ind] = y;
    return ind++;
}
*/
void construct_network(int H, int W, int K) {
    n=H,m=W,k=K;
    map<int, vi> dia1;
    map<int, vi> dia2;
    for(int i = 0; i < n;i++){
        for(int j = 0; j < m;j++){
            dia1[i-j].pb(i*m+j);
            dia2[i+j].pb(i*m+j);
        }
    }
    map<int, int> posdia1, posdia2;
    map<int, int> dia1_2, dia2_2;
    for(auto p : dia1){
        posdia1[p.ff] = add_or(p.ss);
        vi v = p.ss;
        v.pb(posdia1[p.ff]);
        dia1_2[p.ff] = add_xor(v);
    }
    for(auto p : dia2){
        posdia2[p.ff] = add_or(p.ss);
        vi v = p.ss;
        v.pb(posdia2[p.ff]);
        dia2_2[p.ff] = add_xor(v);
    }
    vi tot1;
    map<int, int> mp1_or;
    for(int i = 1-m;i <= n-1;i++){
        vi v, v1;
        for(int j = i;j <= min(i+k-1, n-1);j++){
            v.pb(posdia1[j]);
            v1.pb(dia1_2[j]);
        }

        int l = add_or(v1);
        int a = add_or(v);
        mp1_or[i] = a;
        v.pb(a);
        int c = add_xor(v);
        tot1.pb(c);
        tot1.pb(l);
    }
    int k_1 = add_or(tot1);    
    vi tot2;
    for(int i = 0;i <= (n-1+m-1);i++){
        vi v, v1;
        for(int j = i;j <= min(i+k-1, n-1+m-1);j++){
            v.pb(posdia2[j]);
            v1.pb(dia2_2[j]);
        }
        int l = add_or(v1);
        int a = add_or(v);
        v.pb(a);
        int c = add_xor(v);
        tot2.pb(c);
        tot2.pb(l);
    }
    int k_2 = add_or(tot2);
    tot1.clear();
    for(int i = 1-m;i <= n-1;i++){

        int x = mp1_or[i];
        vi v = {x};
        if((i+k) <= (n-1)){
            v.pb(posdia1[i+k]);
        }
        vi v1;
        for(int j = i;j <= min(i+k, n-1);j++){
            //v.pb(posdia1[j]);
            v1.pb(dia1_2[j]);
        }
        int l = add_or(v1);
        int a = add_or(v);
        v.pb(a);
        int c = add_xor(v);
        tot1.pb(c);
        tot1.pb(l);
    }
    int k1 = add_or(tot1);
    tot2.clear();
    for(int i = 0;i <= (n-1+m-1);i++){
        vi v, v1;
        for(int j = i;j <= min(i+k, n-1+m-1);j++){
            v.pb(posdia2[j]);
            v1.pb(dia2_2[j]);
        }

        int l = add_or(v1);
        int a = add_or(v);
        v.pb(a);
        int c = add_xor(v);
        tot2.pb(c);
        tot2.pb(l);
    }
    int k2 = add_or(tot2);
    int a = add_and({k1, k2});
    int b = add_and({k_1, k_2});
    int tem = add_not(b);
    int br = add_and({a, tem});
}
/*
int32_t main(){
    init();
    speed;
    arr[0] = 1;
    arr[2] = 1;
    ind = 200*200;
    construct_network(200, 200, 398);
    cout << endl;
    cout << last << " " << best << endl;
}*/
 
/*
    NEVER GIVE UP!
    DOING SMTHNG IS BETTER THAN DOING NTHNG!!!
    Your Guide when stuck:
    - Continue keyword only after reading the whole input
    - Don't use memset with testcases
    - Check for corner cases(n=1, n=0)
    - Check where you declare n(Be careful of declaring it globally and in main)
*/

Compilation message

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:203:9: warning: unused variable 'br' [-Wunused-variable]
  203 |     int br = add_and({a, tem});
      |         ^~
vision.cpp: In function 'void usaco_problem()':
vision.cpp:36:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   36 |     freopen("milkvisits.in", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vision.cpp:37:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |     freopen("milkvisits.out", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vision.cpp: In function 'void init()':
vision.cpp:43:8: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   43 | freopen("input.txt", "r", stdin);
      | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
vision.cpp:45:8: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   45 | freopen("output.txt", "w", stdout);
      | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Incorrect 0 ms 348 KB on inputs (0, 0), (1, 2), expected 1, but computed 0
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Incorrect 0 ms 348 KB on inputs (0, 0), (1, 2), expected 1, but computed 0
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Incorrect 0 ms 348 KB on inputs (0, 0), (1, 2), expected 1, but computed 0
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Incorrect 0 ms 348 KB on inputs (0, 0), (1, 2), expected 1, but computed 0
10 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 604 KB Output is correct
2 Correct 10 ms 1836 KB Output is correct
3 Correct 10 ms 1884 KB Output is correct
4 Correct 13 ms 2140 KB Output is correct
5 Correct 2 ms 600 KB Output is correct
6 Correct 8 ms 1576 KB Output is correct
7 Correct 12 ms 2140 KB Output is correct
8 Correct 13 ms 2136 KB Output is correct
9 Correct 2 ms 600 KB Output is correct
10 Correct 7 ms 1372 KB Output is correct
11 Correct 10 ms 1884 KB Output is correct
12 Correct 10 ms 1880 KB Output is correct
13 Correct 12 ms 2136 KB Output is correct
14 Correct 13 ms 2136 KB Output is correct
15 Correct 2 ms 604 KB Output is correct
16 Correct 7 ms 1396 KB Output is correct
17 Correct 10 ms 1880 KB Output is correct
18 Correct 10 ms 1884 KB Output is correct
19 Correct 12 ms 2140 KB Output is correct
20 Correct 13 ms 2140 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 2 ms 604 KB Output is correct
4 Incorrect 4 ms 1116 KB on inputs (0, 0), (3, 28), expected 1, but computed 0
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 14 ms 3164 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 2 ms 604 KB Output is correct
4 Correct 3 ms 860 KB Output is correct
5 Correct 1 ms 604 KB Output is correct
6 Correct 1 ms 604 KB Output is correct
7 Correct 8 ms 1748 KB Output is correct
8 Correct 8 ms 1836 KB Output is correct
9 Correct 14 ms 3160 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Incorrect 0 ms 348 KB on inputs (0, 0), (1, 2), expected 1, but computed 0
10 Halted 0 ms 0 KB -