Submission #247678

#TimeUsernameProblemLanguageResultExecution timeMemory
247678super_j6말 (IOI15_horses)C++14
Compilation error
0 ms0 KiB
#include "horses.h"
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define endl '\n'
#define ll long long
#define ld long double
#define pi pair<int, int>
#define f first
#define s second
#define vi vector<int>

const int mod = 1000000007;
struct mint{
	int x;
	ld y;
	
	mint(int x = 0) : x(x), y(x) {}
	mint(int x, ld y) : x(x), y(y) {}
	explicit operator int() const{ return x;}
	
	friend mint operator+(mint a, mint b){
		return mint((a.x + b.x) % mod, a.y + b.y);
	}
	
	friend mint operator*(mint a, mint b){
		return mint((ll)a.x * b.x % mod, a.y * b.y);
	}
	
	friend bool operator<(mint a, mint b){
		return a.y < b.y;
	}
};

struct segTree{
	int l, r;
	segTree *left, *right;
	mint val[2];
	
	segTree(int a, int b){
		l = a, r = b;
		if(l != r){
			int mid = (l + r) / 2;
			left = new segTree(l, mid);
			right = new segTree(mid + 1, r);
		}
	}
	
	void add(int x, mint v, int t){
		if(x < l || r < x) return;
		if(l == r){
			val[t] = v * (t ? val[0] : 1);
			return;
		}
		left->add(x, v, t);
		right->add(x, v, t);
		val[0] = left->val[0] * right->val[0];
		val[1] = max(left->val[1], left->val[0] * right->val[1]);
	}
} *tre;

int sol(){
	return (int)tre->val[1];
}

int init(int n, vi x, vi y){
	tre = new segTree(0, n - 1);
	for(int i = 0; i < n; i++){
		tre->add(i, x[i], 0);
		tre->add(i, y[i], 1);
	}
	return sol();
}

int updateX(int a, int b){
	tre->add(a, b, 0);
	return sol();
}

int updateY(int a, int b){
	tre->add(a, b, 1);
	return sol();
}
/*
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);

	int n, q;
	vi x, y;
	
	cin >> n;
	x.resize(n), y.resize(n);
	
	for(int &i : x) cin >> i;
	for(int &i : y) cin >> i;
	
	cout << init(n, x, y) << endl;
	
	cin >> q;
	while(q--){
		int t, a, b;
		cin >> t >> a >> b;
		cout << (!t ? updateX(a, b) : updateY(a, b)) << endl;
	}

	return 0;
}
*/

Compilation message (stderr)

horses.cpp: In constructor 'mint::mint(int)':
horses.cpp:20:18: warning: declaration of 'x' shadows a member of 'mint' [-Wshadow]
  mint(int x = 0) : x(x), y(x) {}
                  ^
horses.cpp:17:6: note: shadowed declaration is here
  int x;
      ^
horses.cpp: In constructor 'mint::mint(int, long double)':
horses.cpp:21:20: warning: declaration of 'y' shadows a member of 'mint' [-Wshadow]
  mint(int x, ld y) : x(x), y(y) {}
                    ^
horses.cpp:18:5: note: shadowed declaration is here
  ld y;
     ^
horses.cpp:21:20: warning: declaration of 'x' shadows a member of 'mint' [-Wshadow]
  mint(int x, ld y) : x(x), y(y) {}
                    ^
horses.cpp:17:6: note: shadowed declaration is here
  int x;
      ^
horses.cpp: In function 'mint operator*(mint, mint)':
horses.cpp:29:29: warning: conversion to 'int' from 'long long int' may alter its value [-Wconversion]
   return mint((ll)a.x * b.x % mod, a.y * b.y);
               ~~~~~~~~~~~~~~^~~~~
/tmp/ccH6lSAi.o: In function `main':
grader.c:(.text.startup+0x2db): undefined reference to `init(int, int*, int*)'
collect2: error: ld returned 1 exit status